package com.example.g5project.chat.model.param;

import com.example.g5project.chat.model.common.AccountParam;
import com.example.g5project.chat.model.enumeration.IdentityEnum;
import com.example.g5project.chat.model.enumeration.MessageTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MessageSendParam {

    @ApiModelProperty("所属会话id")
    @NotNull(message = "所属会话id不可为空")
    @Min(value = 1, message = "所属会话id最小为1")
    private Integer chatId;

    /**
     * 一般情况下，请求中的 From_Account(sendId) 和 To_Account(receiveId) 字段值互换，查询结果不变。
     * 但通过 单发单聊消息 或 批量发单聊消息 接口发送的消息，如果指定 SyncOtherMachine 值为2，
     * 则需要指定正确的 From_Account 和 To_Account 字段值才能查询到该消息。
     */
    @ApiModelProperty("是否同步消息到发送方, 1:同步 2：不同步")
    @Min(value = 1, message = "消息同步字段最小为1")
    @Max(value = 2, message = "消息同步字段最大为2")
    private Integer syncOtherMachine;

    @ApiModelProperty("发送者")
    private AccountParam send;

    @ApiModelProperty("接收者")
    private AccountParam receive;

    /**
     * 消息类型
     *
     * @see MessageTypeEnum
     */
    @ApiModelProperty("消息类型, 1:文本 ...")
    @NotNull(message = "消息类型不可为空")
    private Integer msgType;

    /**
     * 消息内容
     */
    private String msgContent;

}
